package org.example.study2;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Demo_208 {
    public static void main(String[] args) throws IOException {
//        1. 让用户输入一个有效路径
        System.out.println("请输入要扫描的路径:");
        Scanner scanner = new Scanner(System.in);
        // 获取用户输入的跳径
        String rootPath = scanner.next();
        // 根据用户的输入创建一个File对象
        File rootFile = new File(rootPath);
//        2. 校验这个路径是否有效
        // 如果目录不存在
        if (!rootFile.exists()) {
            System.out.println("您输入的路径不存在.");
            return;
        }
        // 是不是一个目录
        if (!rootFile.isDirectory()) {
            System.out.println("您输入的路径不是一个目录.");
            return;
        }
//        3. 让用户输入指定的字符串
        System.out.println("请输入查询的字符串:");
        String keyword = scanner.next();
//        4. 校验这个字符串是否有效
        if (keyword == null || keyword.isEmpty()) {
            System.out.println("关键字不能为空.");
            return;
        }
        // 定义扫描方法使得一直递归，如果有子目录就递归进去子目录
        scan(rootFile, keyword);

    }

    private static void scan(File rootPath, String keyword) throws IOException {
        // 5. 扫描路目径下的所有文件和子录
        File[] files = rootPath.listFiles();
        // 判断数组是不是为空
        if (files.length == 0) {
            // 不操作
            return;
        }

        // 若数组不为空，循环
        for (File file: files) {
            // 6. 如果是目录则跳过
            if (file.isFile()) {
                // 7. 如果是文件，就判断文件名中是否包含指定的字符
                // 获取文件名
                String fileName = file.getName();
                // 8. 如果包含指定字符，询问用户是否执行删除
                if (fileName.contains(keyword)) {
                    System.out.println("找到文件：" + file.getCanonicalPath()
                            + "，包含关键字 " + keyword + ", 是否删除？(Y/N)");
                    // 接收用户的指定
                    Scanner scanner = new Scanner(System.in);
                    String next = scanner.next();
                    if (next.toLowerCase().equals("y")) {
                        // 删除文件
                        file.delete();
                        System.out.println("删除文件：" + file.getCanonicalPath() + "成功");
                    }
                }
                // 9. 如果用户确认删除，则执行删除操作
            } else {
                // 递归扫描
                scan(file, keyword);
            }
        }

    }
}
